查看原文
其他

看完这篇,我奶奶也要去练大模型了!

特大妹 百度 2023-07-20
当下圈里最火的话题莫过大模型

而国内最拉风的大模型莫过文心一言

反正,上千号百度工程师为肝出这个大模型

已经熬出了黑眼圈

像「文心一言」这种超级大模型

训练过程太虐人,搁谁都得“吐血”

即便像百度这么有实力的技术大厂

恐怕,工程师们也在厕所哭晕过好几轮

今天,我们就从技术层面来讲讲

训练一个「文心一言」大模型

到底有多难?到底有多虐人?到底有多吐血?

首先

欲炼大模型→必先搞大集群

大集群,指的是超大规模的GPU算力集群

唯有大集群才能 Hold 住大模型

通常千亿参数规模才好意思叫大模型

比如,GPT-3,有1750亿参数

而文心大模型(ERNIE 3.0 Titan)

参数则高达2600亿


因为,只有训练参数达到一定巨量级

就像达到某个神秘的临界点

大模型才会突然“开窍”

对于这种千亿甚至万亿参数规模的训练

如果按传统老路子配置算力

搞几台GPU服务器,组个算力池

那简直是天方夜谭之一千零一夜

(一千零一夜也训不玩)


举个例子说吧

如果选用NVIDIA主打的GPU A100来战

对GPT-3的1750亿参数进行训练

理论上,单卡需要耗费 32 年的时间

还没来得及出门

就直接惨败在「叹息之墙」下

计算墙丨显存墙丨通信墙

▌计算墙,指的是单卡算力和模型总算力之间的巨大差异。A100 的单卡算力只有 312 TFLOPS,而 GPT-3 则需要 314 ZFLOPs 的总算力,两者相差了 9 个数量级。
▌显存墙,指的是单卡无法完整存储一个大模型的参数。GPT-3 的 1750 亿参数本身就需要 700 GB 的显存空间(每个参数按照 4 个字节计算),而 NVIDIA A100 GPU 只有 80 GB 显存。▌通信墙,主要是分布式训练下集群各计算单元需要频繁参数同步,通信性能将影响整体计算速度。如果通信墙如果处理得不好,很可能导致集群规模越大,训练效率反而会降低。


所以,为把「文心一言」训练出来

百度也是拼了

建成国内云计算市场规模最大

高性能GPU集群

这个巨无霸集群战斗力爆棚

我给大家掰开来看看

集群中的算力节点,是一台台AI服务器

这些AI服务器,名叫:X-MAN

是百度智能云定制的超级AI计算机

目前已经进化到第4代

百度先把单节点的性能卷到了极限

在一个小小的机箱内,塞下8块GPU

提供单机内部134GB/s的Allreduce带宽

所以,每个节点都是

一个算力十足的“小钢炮”

好了,搞完单点,就组战队(集群)

想激发出整个集群的战斗力

并不是简单堆堆设备而已

强调的是精妙的架构设计,好比排兵布阵

百度智能云在【集群网络设计】上

完全从大模型训练的实际需求出发

(比如,在训练中,同号卡 Allreduce 操作霸占网络流量最大,如何实现高吞吐和低延时?)
百度采用了三层CLOS架构,IB组网

把整个集群的性能瞬间拉满

所以

百度卷出了全国最大的IB组网GPU集群

支持1.6万个GPU卡,2000+AI服务器

能提供单集群 EFLOPS 级别的算力

当然,这种“巨无霸”集群

也不是一夜之间建成的
2021年,百度智能云开始着手建设全新一代高性能 GPU 集群2022年,集群建成,可容纳万卡以上规模,提供单集群 EFLOPS 级别算力2023年,集群发力,扛起了文心一言的快速面世集群继续扩张ing...



到了这一步,大集群算是 Ready 了

可你以为把大模型放在集群上

就能愉快地要跑起来?

工程师就能松口气?

训练大模型的过程

是一个全栈协同、软硬兼施的过程

任意一环掉链子,就训练不出来

因此,很多人想知道

文心一言到底如何训练出来的?

训练大模型→得靠AI大底座

百度「AI 大底座」

是百度全栈自研的AI基础设施

从云智一体架构全局看

从下到上三层

芯片层、框架层、模型层

将这三层技术栈的能力

融合进两大工程平台:百度百舸和AI中台

就形成了百度AI大底座

那这底座,具体怎么用?

我们进一步来看

大模型的训练过程

第❶步,把大模型拆了,并制定策略

大模型的训练一定是分布式训练

把一个任务,分解成无数的小任务

再把这些小任务

放到集群中不同GPU或XPU上进行训练

任务分配的时候

需要制定一个“并行策略”,好比刀法

在这个环节中,百度飞桨就是策略制定者

百度飞桨作为业界三大顶流 AI 框架之一

制定的"4D混合并行策略",独步天下

可支持千亿级大模型的训练在月级别完成

好了,现在任务被切得“稀碎”了

等待着投放到计算集群中去训练


可是,辣么大集群
你知道设备之间的链接关系吗?

知道台运行正常、哪台出现故障吗?

第❷步,感知集群拓扑,盘点算力资源

这时候,百度百舸,闪亮登场了

提供性能强劲的AI算力

并有超强的集群拓扑感知能力

它能感知到每台服务器的算力

能感知有多少GPU、CPU、XPU,是闲是忙

能感知到每个节点之间的连接方式

服务器↔服务器,GPU↔GPU

然后

百度百舸把“总账”

交付给百度飞桨处理

接下来,飞桨根据这张图

再出一张“统一逻辑计算视图”

OJBK,准备工作全部Ready

手上有图,动作不慌

第❸步,飞桨开始自动派活

把之前切分的小任务

分配到不同的 GPU/XPU 上去训练

这一步,是最费时费钱的环节

一边要考虑效率,一边要考虑成本

此时,飞桨会根据前面拿到的两张图

执行一个「最优投放策略


兼顾通信需求,兼顾计算资源(带宽、链路)

兼顾成本,兼顾效率,又快又省钱

第❹步,训练和推理,加速!加速!加速!

文心一言,内测一个多月

就完成了4次大的技术升级

看得圈内人目瞪口呆

这么快迭代,凭什么?

一方面是,硬件集群底子足够强

百度千卡规模集群中

多卡线性加速比高达90%

另一方面是,软件加速能力爆表

在训练和推理最费时的两大步

百度自研了秘密武器:加速工具包

训练过程中,文心一言采用了

各项优化的训练加速技术,包括…

这种“加速度”,横向测评也是NO.1!在 2022 年 11 月发布的 MLPerf Trainning v2.1 测试结果中,百度使用飞桨加百度百舸提交的模型训练性能结果,位列同等 GPU 配置下世界第一,端到端训练时间和训练吞吐均超越 NGC PyTorch 框架。
推理过程中,文心一言采用了

各类推理加速优化的方法

能够优化AI框架产出的模型

加快推理速度,提升资源利用率

第❺步,在训练无限循环中

资源管理和任务调度,两项任务不断交互

百度飞桨、百度百舸,左右护法

百度百舸
为AI任务提供各类高性能的“算网存”资源
实时感知AI任务对资源的需求状态
为每个AI任务,调度匹配的资源
百度飞桨

根据百舸告知的集群最新变化

自动调整模型切分和AI任务放置策略

至此

就能够保证大规模训练的高效性

极大提升自适应分布式训练性能

所以,大模型看着难搞

但只要有合适的工具,似乎也没那么难

(可惜大部分人都没有

文心一言背后最大的工具就是

百度智能云的【AI大底座】

目前,AI大底座全部能力已经对外开放

这个底座具有极强的通用性

轻松拿捏各行各业、各种细分场景

对于广大用户来讲

在成熟的AI底座上搞事情

各种坑瞬间都被填平了

①加速AI研发过程,好工具好平台现成的,软硬件全栈支撑,少踩坑,易上手
②技术的先进性,站在巨人的肩膀上看趋势、搞研发,少走弯路

③交付的灵活性:交付方式,各个地域的中心云、边缘云 BEC、本地计算集群 LCC、私有云 ABC Stack 等


都说AI奇点已到,在这样一个大变局下

你可以尝鲜国内最火的大模型「文心一言」

更可以借助其背后的玄妙能力

百度智能云「AI大底座」

炼出自己的行业“仙丹”



彩蛋:遇事不决问「一言」

训练大模型的秘密我们已经扒完了

可是,在为这篇推文起标题的事儿

我们却犯了难,不知道选哪个好?

怎么办?还是请教一下「文心一言」吧


最终,文心一言帮我们选定了这个标题

你觉得咋样?


*本文来源:特大号(ITXXXL)



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存